package awk.javarmi;



import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

/**
 * （2）创建远程类：实现远程接口。
 *    远程类就是远程对象所属的类。RMI规范要求远程类必须实现一个远程接口。此外，为了使远程类的实例变成能为远程客户提供服务的远程对象，可通过以下两种途径之一把它导出（export）为远程对象：
 *  (a)导出为远程对象的第一种方式：使远程类实现远程接口时，同时继承java.rmi.server.UnicastRemoteObject类，并且远程类的构造方法必须声明抛出RemoteException。这是最常用的方式
 *     远程对象必须实现java.rmi.server.UniCastRemoteObject类，该类的构造函数中将生成stub和skeleton， 这样才能保证客户端访问获得远程对象时，该远程对象将会把自身的一个拷贝以Socket的形式传输给客户端
 *  (b)导出为远程对象的第二种方式：如果一个远程类已经继承了其他类，无法再继承UnicastRemoteObject类，那么可以在构造方法中调用UnicastRemoteObject类的静态exportObject()方法将自身导出为远程对象，
 *    同样，远程类的构造方法也必须声明抛出RemoteException。
 *    UnicastRemoteObject.exportObject(this,0);
 *    exportObject(Remote obj, int port)方法负责把参数obj指定的对象导出为远程对象，使它具有相应的存根（Stub），并监听远程客户的方法调用请求；参数port指导监听的端口，如果值为0，表示监听任意一个匿名端口。
 */
public class ServicesImpl  extends UnicastRemoteObject implements Services {
    public ServicesImpl() throws RemoteException {
    }

    @Override
    public Object sendMessage(Message msg) throws RemoteException {
        return msg.getMessage();
    }

}
